package easy.Reader;

import java.util.ArrayList;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class FunctionsAdapter extends BaseAdapter {
	private Context context = null;// 上下文
	private ArrayList<Function> list = null;// 数据源

	private ImageView functionImage = null;
	private TextView functionText = null;

	// 适配器构造函数
	public FunctionsAdapter(Context c, ArrayList<Function> list) {
		this.context = c;// c是上下文，在UI编程中，一般这个参数都是必要的
		this.list = list;// list中是一个Function数组，存放了所有要显示的Function
	}

	// 下面三个是实现抽象函数，可以无视
	public int getCount() {
		return list.size();
	}

	public Object getItem(int position) {
		return list.get(position);
	}

	public long getItemId(int position) {
		return position;
	}

	// 根据参数，个性化自己的View
	public View getView(int position, View convertView, ViewGroup parent) {
		convertView = LayoutInflater.from(context).inflate(R.layout.menu_item,
				null);// 通过上下文获取一开始定义的menu_item布局，以这个布局文件为样式造出一个自定义View

		functionImage = (ImageView) convertView.findViewById(R.id.item_image);// 获取布局文件里的ImageView
		functionText = (TextView) convertView.findViewById(R.id.item_text);// 获取布局文件里的TextView

		functionImage.setImageResource(list.get(position)
				.getFunctionImageRscId());// 对功能按钮的图标进行赋值
		functionText.setText(list.get(position).getFunctionTextRscId());// 对功能按钮的名字进行赋值

		convertView.setOnClickListener(list.get(position).getOnClickListener());
		// 响应不同Function的onClick事件，个人认为这行代码最精妙，仅仅一行代码省去了多少switch和case

		return convertView;// 最终返回一个View，这一个View就是一整个功能按钮，而且是个性化的功能按钮
	}
}
